package br.com.lp3.livraria.model;



import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;

@Entity
public class Cliente extends Usuario{

	@Column
	private String cnpjCpf;

	@Column
	private String nome;

	@OneToMany(mappedBy="cliente", targetEntity=Endereco.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	private List<Endereco> enderecos;
	
	@OneToMany(mappedBy="cliente", targetEntity=Telefone.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)  
	private List<Telefone> telefones;

	@OneToMany(mappedBy="cliente", cascade = CascadeType.ALL, targetEntity=Email.class, fetch = FetchType.LAZY)  
	private List<Email> emails;

	public Cliente() {

	}

	public String getCnpjCpf() {
		return cnpjCpf;
	}

	public void setCnpjCpf(String cnpjCpf) {
		this.cnpjCpf = cnpjCpf;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public List<Endereco> getEnderecos() {
		return enderecos;
	}

	public void setEnderecos(List<Endereco> enderecos) {
		this.enderecos = enderecos;
	}

	public List<Telefone> getTelefones() {
		return telefones;
	}

	public void setTelefones(List<Telefone> telefones) {
		this.telefones = telefones;
	}

	public List<Email> getEmails() {
		return emails;
	}

	public void setEmails(List<Email> emails) {
		this.emails = emails;
	}

	public boolean isFill(int edit) {
		if (super.getLogin().isEmpty()) return false;
		if (edit == 0) {
			if (super.getSenha().isEmpty()) return false;
		}
		if (nome.isEmpty()) return false;
		if (cnpjCpf.isEmpty()) return false;
		for (Endereco endereco : enderecos) {
			if (endereco.getRua().isEmpty()) return false;
			if (endereco.getNumero().isEmpty()) return false;
			if (endereco.getBairro().isEmpty()) return false;
			if (endereco.getCidade().isEmpty()) return false;
			if (endereco.getEstado().isEmpty()) return false;
			if (endereco.getPais().isEmpty()) return false;
		}
		for (Telefone telefone : telefones) {
			if (telefone.getTelefone().isEmpty()) return false;
		}
		for (Email email : emails) {
			if (email.getEmail().isEmpty()) return false;
		}
		return true;
		
	}

}